home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-01-21 | 2.3 KB | 64 lines | [TEXT/ALFA] |
- #================================================================================
- # Scheme mode definition ! oleg@mozart.compsci.com (Oleg Kiselyov)
- #================================================================================
- #newModeVar Scm elecRBrace {1} 1
- newModeVar Scm leftFillColumn {2} 0
- newModeVar Scm prefixString {;; } 0
- #newModeVar Scm electricSemi {1} 1
- newModeVar Scm wordBreak {[^\(\) \t\r\n]+} 0
- #newModeVar Scm elecLBrace {1} 1
- newModeVar Scm wordWrap {0} 1
- newModeVar Scm funcExpr {^[\(]define.*$} 0
- #newModeVar Scm funcExpr {^[^ \t\(\r/].*\(.*\)$} 0
- newModeVar Scm wordBreakPreface {[\(\) \t\r\n]} 0
- #newModeVar Scm wordBreakPreface {([^a-zA-Z0-9_])} 0
- newModeVar Scm optionIsMeta {1} 1
- newModeVar Scm electricTab {1} 1
- newModeVar Scm autoMark 0 1
-
- set scmCommentRegexp {;.*$}
- set scmPreRegexp {^\#[\t ]*[a-z]*}
- set schemeKeyWords {
- declare define define-macro lambda let let* letrec begin cond case do else
- delay and or if set! #t #f
- not eqv? eq? equal? pair? cons car cdr set-car! set-cdr!
- caar cadr cdar cddr null? list? list length
- append reverse list-ref memq memv member assq assv assoc
- = < > <= >= zero? positive? negative? odd?
- even? + * - / abs
- exact->inexact inexact->exact number->string
- string->number char?
- string string-length string-ref string-set! string=?
- substring string-append vector?
- make-vector vector vector-length vector-ref vector-set! procedure?
- apply map for-each call-with-current-continuation
- eof-object? read-char peek-char
- }
- #regModeKeywords -e {;} -c cyan -k blue Scm $schemeKeyWords -i ")" -i "(" -i "," -i "." -I red
- regModeKeywords -e {;} -c cyan -k blue Scm $schemeKeyWords
-
- #================================================================================
-
- proc dummyScm {} {}
-
- proc ScmMarkFile {} {
- set pat1 {^[ \t]*[\(][#a-zA-z]*(define|define-[a-zA-Z]+) +[\(]*([^\(\) \t\r\n]+)}
- set end [maxPos]
- set pos 0
- set l {}
- while {![catch {search -f 1 -r 1 -m 0 -i 1 $pat1 $pos} mtch]} {
- regexp -nocase $pat1 [eval getText $mtch] allofit defunname name
- set start [lindex $mtch 0]
- set end [nextLineStart $start]
- set pos $end
- set inds($name) [lineStart [expr $start - 1]]
- }
-
- if {[info exists inds]} {
- foreach f [lsort -ignore [array names inds]] {
- set next [nextLineStart $inds($f)]
- setNamedMark $f $inds($f) $next $next
- }
- }
- }
-